<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>

    //  解决浅拷贝的方法:
    //      1. for in
    //      2.Object.assgin()
    //      3.扩展运算符
    //  解决深拷贝的方法:
    //     1.递归
    //     2.JSON.parse(JSON.stringify(对象))  缺点: undefined不会被拷贝 function不会被拷贝
    //  浅拷贝
    let concant = {
        name: '张三',
        age: 22,
        sex: '男',
        arr: ['上课', '睡觉', '打代码'],
        obj: {
            index: 1,
            name: '小妹'
        }
    }
    let user = { ...concant }
    concant.arr.push('卢云川')
    console.log(user)
    console.log(concant)

    // // 通过递归实现深拷贝
    // let concant = {
    //     name: '张三',
    //     age: 22,
    //     sex: '男',
    //     arr: ['安宏基', '赵梦瑶', '侯伊涵'],
    //     obj: {
    //         index: 1,
    //         name: '王龙乾'
    //     }
    // }
    // let user = {}

    // function myCopy(newObj, obj) {
    //     for (let key in obj) {
    //         if (obj[key] instanceof Array) {
    //             newObj[key] = []
    //             myCopy(newObj[key], obj[key])
    //         } else if (obj[key] instanceof Object) {
    //             newObj[key] = {}
    //             myCopy(newObj[key], obj[key])
    //         } else {
    //             newObj[key] = obj[key]
    //         }
    //     }
    // }

    // // 调用递归函数
    // myCopy(user, concant)

    // concant.arr.push('王越')
    // console.log(user)
    // console.log(concant)

    //  JSON.parse(JSON.stringify(对象))

    // const obj = {
    //     uname: '侯伊涵',
    //     age: 18,
    //     hobby: ['学习', '代码'],
    //     family: {
    //         father: '张三'
    //     }
    // }
    // const add = JSON.parse(JSON.stringify(obj))
    // add.family.father = '张三'
    // console.log(add)  
    // console.log(obj) 
  </script>
</html>
